<?php
/**
 * Created by JetBrains PhpStorm.
 * User: Mr.UBKey
 * Date: 27/10/2011
 * Time: 17:10
 * To change this template use File | Settings | File Templates.
 */
class Product_ControlPanelController extends XPHP_Controller
{
    public function _init()
    {
        $this->loadLayout('ControlPanel/XAdmin');
    }

    #[Authorize(roles = 'Administrator')]
    public function indexAction()
    {
        //Thông tin lọc sản phẩm
        $options = array();
        if($this->hasParams('category_id') && $this->params['category_id'] != "")
        {
            $options['category_id'] = $this->params['category_id'];
        }
        //Lấy ra danh sách các danh mục trong hệ thống
        $catModel = new Areas_Product_Models_Category();
        $categories = $catModel->getCategoryTree();
        $categoriesOptions = array();
        foreach($categories as $cat)
        {
            $categoriesOptions[$cat->id] = $cat->name;
        }
        $this->view->categoriesOptions = $categoriesOptions;
        $productModel = new Areas_Product_Models_Product();
        //Lấy ra danh sách các sản phẩm
        $productList = array();
        $products = $productModel->getProducts($options);
        //Lấy ra tên của danh mục sản phẩm
        for($i=0; $i<count($products); $i++)
        {
            $cat = new Areas_Product_Models_Category($products[$i]->category_id);
            $products[$i]->category_name = $cat->name;
        }
        $this->view->products = $products;
        return $this->view();
    }

    #[Authorize(roles = 'Administrator')]
    public function createAction()
    {
        //Lấy ra danh mục các sản phẩm
        $catModel = new Areas_Product_Models_Category();
        $categories = $catModel->getCategoryTree(0);
        $categoryOptions = array();
        foreach($categories as $cat)
        {
            $categoryOptions[$cat->id] = $cat->name;
        }
        $this->view->categoryOptions = $categoryOptions;
        //
        $model = new Areas_Product_Models_Product();
        return $this->view($model);
    }

    #[Authorize(roles = 'Administrator')]
    public function createPost(Areas_Product_Models_Product $model)
    {
        if($this->model->validate())
        {
            $this->model->date_create = date("Y-m-d H:i:s");
            $this->model->lang_id = $_SESSION['lang_id'];
            if($this->model->insert())
            {
                return $this->json(array("success" => true, "message" => "Thêm sản phẩm thành công"));
            }
            else
                return $this->json(array("success" => false, "message" => "Xảy ra lỗi khi thêm sản phẩm vào hệ thống"));
        }
        else
            return $this->json(array("success" => false, "message" => "Thông tin nhập vào chưa chính xác"));
    }

    #[Authorize(roles = 'Administrator')]
    public function editAction()
    {
        //Lấy ra danh mục các sản phẩm
        $catModel = new Areas_Product_Models_Category();
        $categories = $catModel->getCategoryTree(0);
        $categoryOptions = array();
        foreach($categories as $cat)
        {
            $categoryOptions[$cat->id] = $cat->name;
        }
        $this->view->categoryOptions = $categoryOptions;
        //
        $id = $this->params[0];
        $model = new Areas_Product_Models_Product($id);
        return $this->view($model);
    }

    #[Authorize(roles = 'Administrator')]
    public function editPost(Areas_Product_Models_Product $model)
    {
        if($this->model->validate())
        {
            if($this->model->update())
            {
                return $this->json(array("success" => true, "message" => "Cập nhật sản phẩm thành công"));
            }
            else
                return $this->json(array("success" => false, "message" => "Xảy ra lỗi khi cập nhật sản phẩm"));
        }
        else
            return $this->json(array("success" => false, "message" => "Thông tin nhập vào chưa chính xác"));
    }

    #[Authorize(roles = 'Administrator')]
    public function deletePost(Areas_Product_Models_Product $model)
    {
        $this->model->delete();
        return $this->json(array("success" => false, "message" => "Xóa sản phẩm thành công"));
    }
}
